package src.itheima08;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/*
    斗地主综合案例
        一: 准备牌
            1.创建ArrayList集合对象pokers,代表牌盒,存储54张牌,泛型 String
            2.创建2个ArrayList集合对象colors和nums,存储花色和数字
            3.向花色集合colors中存储花色
            4.向数字集合nums中存储数字
            5.循环嵌套遍历花色集合和数字集合
            6.产生一张扑克,存储牌盒pokers中
            7.添加小王和大王
            8.打印

        二: 洗牌(打乱54张扑克的顺序)
            java.util.Collections工具类,静态方法:
                public static void shuffle(List<?> list) : 打乱方法参数List接口的实现类对象中的元素顺序

        三: 发牌
            1.创建4个ArrayList集合对象,分别用来存储3个文件的扑克和底牌的扑克
            2.因为要根据每张扑克索引发牌,所以只能使用普通for+get(索引),遍历存储54张扑克的ArrayList集合对象
            3.获取当前扑克
            4.因为要留出3张底牌,所以判断索引是否>50: 留作底牌
            5.因为要留出3张底牌,所以判断索引是否<=50: 根据索引%3的结果,发给不同的玩家
        四: 看牌
            直接打印

 */
public class PokerGame {
    public static void main(String[] args) {
        //一: 准备牌
        //1.创建ArrayList集合对象pokers,代表牌盒,存储54张牌,泛型 String
        ArrayList<String> pokers = new ArrayList<>();

        //2.创建2个ArrayList集合对象colors和nums,存储花色和数字
        ArrayList<String> colors = new ArrayList<>();
        ArrayList<String> nums = new ArrayList<>();

        //3.向花色集合colors中存储花色
        colors.add("♥");
        colors.add("♠");
        colors.add("♣");
        colors.add("♦");

        //4.向数字集合nums中存储数字: 2-10,J,Q,K,A
        for(int i = 2;i<=10;i++) {
            nums.add(i+"");
        }
        nums.add("J");
        nums.add("Q");
        nums.add("K");
        nums.add("A");

        //5.循环嵌套遍历花色集合和数字集合
        for (String num : nums) {
            for (String color : colors) {
                //6.产生一张扑克
                String poker = color + num;
                //存储牌盒pokers中
                pokers.add(poker);
            }
        }
        //7.添加小王和大王
        pokers.add("小王");
        pokers.add("大王");
        //8.打印
        //System.out.println(pokers);
        /*
            二: 洗牌(打乱54张扑克的顺序)
            java.util.Collections工具类,静态方法:
                public static void shuffle(List<?> list) : 打乱方法参数List接口的实现类对象中的元素顺序
         */
        Collections.shuffle(pokers);
        //System.out.println(pokers);

        //三: 发牌
        //1.创建4个ArrayList集合对象,分别用来存储3个文件的扑克和底牌的扑克
        ArrayList<String> p1 = new ArrayList<>();
        ArrayList<String> p2 = new ArrayList<>();
        ArrayList<String> p3 = new ArrayList<>();
        ArrayList<String> bottom = new ArrayList<>();

        //2.因为要根据每张扑克索引发牌,所以只能使用普通for+get(索引),遍历存储54张扑克的ArrayList集合对象
        for(int i = 0;i<pokers.size();i++) {
            //3.获取当前扑克
            String poker = pokers.get(i);
            if(i>50) {
                //4.因为要留出3张底牌,所以判断索引是否>50: 留作底牌
                bottom.add(poker);
            } else {
                //5.因为要留出3张底牌,所以判断索引是否<=50: 根据索引%3的结果,发给不同的玩家
                if(i%3==0) {
                    //发给玩家一
                    p1.add(poker);
                } else if(i%3==1) {
                    //发给玩家二
                    p2.add(poker);
                } else {
                    //发给玩家三
                    p3.add(poker);
                }

            }

        }
        //看牌
        System.out.println("宝强: "+p1);
        System.out.println("金莲: "+p2);
        System.out.println("门庆: "+p3);
        System.out.println("底牌: "+bottom);
    }
}
